#pragma once
#ifndef __G_MESSAGE_HANDLER_H__
#define __G_MESSAGE_HANDLER_H__

#include "GTypes.h"

namespace GEngine
{
	class GWindow;
	class GSystemMessage;

	class GMessageHandler
	{
	protected:
		GWindow*		Window;

	public:
		static const GUInt32 G_MSG_VAL_HANDLER_ENABLED;
		static const GUInt32 G_MSG_VAL_HANDLER_DISABLED;

						GMessageHandler();
						~GMessageHandler();
		
		bool			IsGlobal() const;

		void			SetTargetWindow(GWindow* TargetWindow);
		GWindow*		GetTargetWindow() const;

		virtual GSSize	HandleMessage(const GSystemMessage* Message) = 0;
	};
}

#endif